package main

import "fmt"

func main() {

	copyArr1()

	copyArr2()
}

func copyArr2() {
	//创建和初始化数组
	//使用简写声明
	my_arr1 := [6]int{12, 456, 67, 65, 34, 34}

	//将数组复制到新变量中
	//在这里，元素通过引用传递
	my_arr2 := &my_arr1

	fmt.Println("Array_1: ", my_arr1)
	fmt.Println("Array_2:", *my_arr2)

	my_arr1[5] = 1000000

	//在这里，当我们复制数组时
	//通过引用放入另一个数组
	//然后对原始内容进行更改
	//数组将反映在
	//该数组的副本
	fmt.Println("\nArray_1: ", my_arr1)
	fmt.Println("Array_2:", *my_arr2)
}

/*
*

数组值copy

输出结果：
Array_1:  [Scala Perl Java Python Go]
Array_2:  [Scala Perl Java Python Go]

Array_1:  [C++ Perl Java Python Go]
Array_2:  [Scala Perl Java Python Go]
*/
func copyArr1() {
	//创建和初始化数组
	//使用简写声明
	my_arr1 := [5]string{"Scala", "Perl", "Java", "Python", "Go"}

	//将数组复制到新变量中
	//在这里，元素按值传递
	my_arr2 := my_arr1

	fmt.Println("Array_1: ", my_arr1)
	fmt.Println("Array_2: ", my_arr2)

	my_arr1[0] = "C++"

	//在这里，当我们复制数组时
	//按值放入另一个数组
	//然后对原始内容进行更改
	//数组不反映在
	//该数组的副本
	fmt.Println("\nArray_1: ", my_arr1)
	fmt.Println("Array_2: ", my_arr2)
}
